﻿//начало текста модуля
&НаКлиенте
Перем Ванесса;
 
&НаКлиенте
Перем Контекст Экспорт;
 
&НаКлиенте
Перем КонтекстСохраняемый Экспорт;

&НаКлиенте
Функция ДобавитьШагВМассивТестов(МассивТестов,Снипет,ИмяПроцедуры,ПредставлениеТеста = Неопределено,Транзакция = Неопределено,Параметр = Неопределено)
	Структура = Новый Структура;
	Структура.Вставить("Снипет",Снипет);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ПредставлениеТеста",ПредставлениеТеста);
	Структура.Вставить("Транзакция",Транзакция);
	Структура.Вставить("Параметр",Параметр);
	МассивТестов.Добавить(Структура);
КонецФункции

&НаКлиенте
Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт
	Ванесса = КонтекстФреймворкаBDD;
	
	ВсеТесты = Новый Массив;

	//описание параметров
	//ДобавитьШагВМассивТестов(ВсеТесты,Снипет,ИмяПроцедуры,ПредставлениеТеста,Транзакция,Параметр);

	ДобавитьШагВМассивТестов(ВсеТесты,"НаДискеПоявляетсяFeature_файл()","НаДискеПоявляетсяFeature_файл","Тогда На диске появляется feature-файл");
	ДобавитьШагВМассивТестов(ВсеТесты,"СформироватьИмяВременногоФайлаФичи(Парам01)","СформироватьИмяВременногоФайлаФичи","Когда Сформировать имя временного файла фичи ""Example1""");
	ДобавитьШагВМассивТестов(ВсеТесты,"ЯОткрываюТекстовыйРедактор()","ЯОткрываюТекстовыйРедактор","Когда Я открываю текстовый редактор");
	ДобавитьШагВМассивТестов(ВсеТесты,"ЗапустилсяNotepad()","ЗапустилсяNotepad","Тогда запустился Notepad++");
	ДобавитьШагВМассивТестов(ВсеТесты,"ЯПишуТекстFeature_файла()","ЯПишуТекстFeature_файла","И Я пишу текст feature-файла");
	ДобавитьШагВМассивТестов(ВсеТесты,"СохраняюСделанныеИзменения()","СохраняюСделанныеИзменения","И Сохраняю сделанные изменения");

	Возврат ВсеТесты;
КонецФункции

&НаКлиенте
Процедура ПередНачаломСценария() Экспорт
КонецПроцедуры

&НаКлиенте
Процедура ПередОкончаниемСценария() Экспорт
	
КонецПроцедуры


&НаКлиенте
//Я открываю текстовый редактор
//@ЯОткрываюТекстовыйРедактор()
Процедура ЯОткрываюТекстовыйРедактор() Экспорт
	Команда = ПолучитьСтрокуВызоваSikuli() + Ванесса.Объект.КаталогИнструментов + "\tools\Sikuli\FirstFeature.sikuli 1";

	Результат = ВыполнитьКомандуОС(Команда);
	
	Ванесса.ПроверитьРавенство(Результат, 0 , "Выполнен шаг ЯОткрываюТекстовыйРедактор");
КонецПроцедуры

&НаКлиенте
//Я пишу текст feature-файла
//@ЯПишуТекстFeature_файла()
Процедура ЯПишуТекстFeature_файла() Экспорт
	//ПутьКФиче = Ванесса.Объект.КаталогИнструментов + "\features\Core\FeatureWrite\Demo.feature";
	//Текст = Новый ЧтениеТекста;
	//Текст.Открыть(ПутьКФиче,"UTF-8");
	//
	//WshShell = Новый COMОбъект("Wscript.Shell"); 
	//
	//Пока Истина Цикл
	//	Стр = Текст.ПрочитатьСтроку();
	//	Если Стр = Неопределено Тогда
	//		Прервать;
	//	КонецЕсли;	 
	//	
	//	Для Ккк = 1 По СтрДлина(Стр) Цикл
	//		Символ = Сред(Стр,Ккк,1);
	//		WshShell.SendKeys(Символ);
	//		Сообщить(""+Символ);
	//	КонецЦикла;
	//КонецЦикла;	
	//
	//Текст.Закрыть();
	
	//
	Команда = ПолучитьСтрокуВызоваSikuli() + Ванесса.Объект.КаталогИнструментов + "\tools\Sikuli\FirstFeature.sikuli 2 """ + Ванесса.Объект.КаталогИнструментов + "\features\Core\FeatureWrite\Demo.feature""";

	Результат = ВыполнитьКомандуОС(Команда);
	
	Ванесса.ПроверитьРавенство(Результат, 0 , "Выполнен шаг ЯПишуТекстFeature_файла");
КонецПроцедуры

&НаКлиенте
//Сохраняю сделанные изменения
//@СохраняюСделанныеИзменения()
Процедура СохраняюСделанныеИзменения() Экспорт
	//Команда = ПолучитьСтрокуВызоваSikuli() + Ванесса.Объект.КаталогИнструментов + "\tools\Sikuli\FirstFeature.sikuli 3 """ + Контекст.ИмяВременнойФичи + "";
	//Результат = ВыполнитьКомандуОС(Команда);
	
	Результат = Ванесса.ВыполнитьSikuliСкрипт(Ванесса.Объект.КаталогИнструментов + "\tools\Sikuli\FirstFeature.sikuli 3 """ + Контекст.ИмяВременнойФичи);
	Ванесса.ПроверитьРавенство(Результат, 0 , "Выполнен шаг СохраняюСделанныеИзменения");
	
	Ванесса.СделатьДействияПриЗаписиИнструкции();
	
	Результат = Ванесса.ВыполнитьSikuliСкрипт(Ванесса.Объект.КаталогИнструментов + "\tools\Sikuli\FirstFeature.sikuli 4 """);
КонецПроцедуры

&НаКлиенте
//на диске появляется feature-файл
//@НаДискеПоявляетсяFeature_файл()
Процедура НаДискеПоявляетсяFeature_файл() Экспорт
	ПроверяемыйФайл = Новый Файл(Контекст.ИмяВременнойФичи);
	
	Ванесса.ПроверитьИстину(ПроверяемыйФайл.Существует(), "");
КонецПроцедуры

&НаКлиенте
Функция ПолучитьСтрокуВызоваSikuli()
	Возврат """C:\Program Files (x86)\Java\jre6\bin\java.exe"" -Xms64M -Xmx512M -Dfile.encoding=UTF-8 -Dpython.path=""C:\Program Files (x86)\Sikuli Xi\sikuli-script.jar/"" -jar ""C:\Program Files (x86)\Sikuli X\sikuli-ide.jar"" -r ";
КонецФункции	

&НаКлиенте
Функция ВыполнитьКомандуОС(Стр)
	ИмяВременногоBAT = ПолучитьИмяВременногоФайла("bat");

	ЗТ = Новый ЗаписьТекста(ИмяВременногоBAT,КодировкаТекста.ANSI,,Истина); 

	ЗТ.ЗаписатьСтроку(Стр); 
	ЗТ.Закрыть();
	
	WshShell = Новый COMОбъект("WScript.Shell");

	Рез = WshShell.Run(ИмяВременногоBAT,0,-1);
	WshShell = Неопределено;
	
	Возврат Рез;
КонецФункции

&НаКлиенте
//Когда Сформировать имя временного файла фичи "Пример1"
//@СформироватьИмяВременногоФайлаФичи(Парам01)
Процедура СформироватьИмяВременногоФайлаФичи(ИмяФайла) Экспорт
	Контекст.Вставить("ИмяВременнойФичи", КаталогВременныхФайлов() + ИмяФайла + ".feature");	

	ПроверяемыйФайл = Новый Файл(Контекст.ИмяВременнойФичи);
	Если ПроверяемыйФайл.Существует() Тогда
		УдалитьФайлы(Контекст.ИмяВременнойФичи);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
//Тогда запустился Notepad++
//@ЗапустилсяNotepad()
Процедура ЗапустилсяNotepad() Экспорт
	Результат = Ванесса.ВыполнитьSikuliСкрипт(Ванесса.Объект.КаталогИнструментов + "\tools\Sikuli\NotePadIsOpen.sikuli""");
	Ванесса.ПроверитьРавенство(Результат, 0 , "NotePad++ открылся.");
КонецПроцедуры
